When _f_r_e_e_P_r_o_c is called, its _b_l_o_c_k_P_t_r will be set to the value of _s_t_r_i_n_g
passed to TTTTccccllll____SSSSeeeettttRRRReeeessssuuuulllltttt.
If _s_t_r_i_n_g is NNNNUUUULLLLLLLL, then _f_r_e_e_P_r_o_c is ignored and TTTTccccllll____SSSSeeeettttRRRReeeessssuuuulllltttt re-
initializes _i_n_t_e_r_p's result to point to the pre-allocated result area,
with an empty string in the result area.
If TTTTccccllll____SSSSeeeettttRRRReeeessssuuuulllltttt is called at a time when _i_n_t_e_r_p holds a result,
TTTTccccllll____SSSSeeeettttRRRReeeessssuuuulllltttt does whatever is necessary to dispose of the old result
(see the TTTTccccllll____IIIInnnntttteeeerrrrpppp manual entry for details on this).
TTTTccccllll____AAAAppppppppeeeennnnddddRRRReeeessssuuuulllltttt makes it easy to build up Tcl results in pieces. It
takes each of its _s_t_r_i_n_g arguments and appends them in order to the
current result associated with _i_n_t_e_r_p. If the result is in its
initialized empty state (e.g. a command procedure was just invoked or
TTTTccccllll____RRRReeeesssseeeettttRRRReeeessssuuuulllltttt was just called), then TTTTccccllll____AAAAppppppppeeeennnnddddRRRReeeessssuuuulllltttt sets the result
to the concatenation of its _s_t_r_i_n_g arguments. TTTTccccllll____AAAAppppppppeeeennnnddddRRRReeeessssuuuulllltttt may be
called repeatedly as additional pieces of the result are produced.
TTTTccccllll____AAAAppppppppeeeennnnddddRRRReeeessssuuuulllltttt takes care of all the storage management issues
associated with managing _i_n_t_e_r_p's result, such as allocating a larger
result area if necessary. Any number of _s_t_r_i_n_g arguments may be passed
in a single call; the last argument in the list must be a NULL pointer.
TTTTccccllll____AAAAppppppppeeeennnnddddEEEElllleeeemmmmeeeennnntttt is similar to TTTTccccllll____AAAAppppppppeeeennnnddddRRRReeeessssuuuulllltttt in that it allows
results to be built up in pieces. However, TTTTccccllll____AAAAppppppppeeeennnnddddEEEElllleeeemmmmeeeennnntttt takes only
a single _s_t_r_i_n_g argument and it appends that argument to the current
result as a proper Tcl list element. TTTTccccllll____AAAAppppppppeeeennnnddddEEEElllleeeemmmmeeeennnntttt adds backslashes
or braces if necessary to ensure that _i_n_t_e_r_p's result can be parsed as a
list and that _s_t_r_i_n_g will be extracted as a single element. Under normal
conditions, TTTTccccllll____AAAAppppppppeeeennnnddddEEEElllleeeemmmmeeeennnntttt will add a space character to _i_n_t_e_r_p's
result just before adding the new list element, so that the list elements
in the result are properly separated. However if the new list element is|
the first in a list or sub-list (i.e. _i_n_t_e_r_p's current result is empty, |
or consists of the single character ``{'', or ends in the characters `` |
{'') then no space is added.
TTTTccccllll____RRRReeeesssseeeettttRRRReeeessssuuuulllltttt clears the result for _i_n_t_e_r_p, freeing the memory
associated with it if the current result was dynamically allocated. It
leaves the result in its normal initialized state with _i_n_t_e_r_p->_r_e_s_u_l_t
pointing to a static buffer containing TTTTCCCCLLLL____RRRREEEESSSSUUUULLLLTTTT____SSSSIIIIZZZZEEEE characters, of
which the first character is zero. TTTTccccllll____RRRReeeesssseeeettttRRRReeeessssuuuulllltttt also clears the error
state managed by TTTTccccllll____AAAAddddddddEEEErrrrrrrroooorrrrIIIInnnnffffoooo and TTTTccccllll____SSSSeeeettttEEEErrrrrrrroooorrrrCCCCooooddddeeee.
TTTTccccllll____FFFFrrrreeeeeeeeRRRReeeessssuuuulllltttt is a macro that performs part of the work of
TTTTccccllll____RRRReeeesssseeeettttRRRReeeessssuuuulllltttt. It frees up the memory associated with _i_n_t_e_r_p's result
and sets _i_n_t_e_r_p->_f_r_e_e_P_r_o_c to zero, but it doesn't change _i_n_t_e_r_p->_r_e_s_u_l_t